// 2.4. 数据类型-枚举类型
/**
 * 枚举类型(enumeration)是C++中的一种派生数据类型，它是由用户定义的若干枚举常量的集合。

如果一个变量只有几种可能的值，可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来，变量的值只能在列举出来的值的范围内。

创建枚举，需要使用关键字 enum。枚举类型的一般形式为：
enum 枚举名{ 
     标识符[=整型常数], 
     标识符[=整型常数], 
... 
    标识符[=整型常数]
} 枚举变量;
   
 *
*/
#include <iostream>

int main()
{
  // enum color {
  //   red,
  //   green,
  //   blue
  // } c; // 定义了一个颜色枚举，变量 c 的类型为 color。

  // c = blue;// c 被赋值为 "blue"

  // 默认情况下，第一个名称的值为 0，第二个名称的值为 1，第三个名称的值为 2，以此类推。
  // 但是，您也可以给名称赋予一个特殊的值，只需要添加一个初始值即可。
  // 例如，在下面的枚举中，green 的值为 5。在这里，blue 的值为 6，因为默认情况下，每个名称都会比它前面一个名称大 1，但 red 的值依然为 0。
  // int red = 2;
  // int green;
  // int blue;

  enum color {
    red,
    green = 5,
    blue
  } c; 
  
  std::cout << "red:\t" << red << '\n'
            << "green:\t" << green << '\n'
            << "blue:\t" << blue << '\n';

  enum color c1 = blue;

  std::cout << c1 << '\n';


  // 与typedef结合使用
  typedef enum day {
    one,two,three
  }  e_c;

  e_c d = two;

  std::cout << d << std::endl;


  printf("-------------end----------\n");
  return 0;
}